package com.devframe.sysconfig.storage;

import java.util.List;
import java.util.Map;

/**
 * 数据加载存储
 * @author 詹保山
 *
 */
public abstract class SysConfigDataStorage {
    /**
     * 清楚代码表数据
     */
	public abstract void clearCodeTableData();
	/**
	 * 装载代码表的 配置集合（代码表是按需进行加载，一启动时只加载配置信息，后续根据需要进行加载表码）
	 * @param codeTableName
	 * @param tableSet
	 */
	public abstract void addCodeTableSet(String codeTableName, Map tableSet);
	/**
	 * 判断是否包含代码表的配置信息
	 * @param codeTableName
	 * @return
	 */
	public abstract boolean containsKeyInCodeTableSet(String codeTableName);
	/**
	 * 判断代码表数据中是否包含指定代码表名数据
	 * @param codeTableName
	 * @return
	 */
	public abstract boolean containsKeyInCodeTable(String codeTableName);
	/**
	 * 根据代码表名 获取代码表的配置数据
	 * @param codeTableName
	 * @return
	 */
	public abstract Map getCodeTableSet(String codeTableName);
	/**
	 * 根据代码表名 获取代码表的数据
	 * @param codeTableName
	 * @return
	 */
	public abstract Map getCodeTable(String codeTableName);
	/**
	 * 根据代码添加到缓存中
	 * @param tableName
	 * @param val
	 */
	public abstract void addCodeTable(String tableName,Map val);
	
	/////////////////////////系统参数////////////////
	/**
	 * 清除系统参数
	 */
	public abstract void clearSysParamData();
	/**
	 * 判断系统参数中是否包含指定的健值
	 * @param key
	 * @return
	 */
	public abstract boolean containsKeyInSysParam(String key);
	/**
	 * 获取系统参数
	 * @param key
	 * @return
	 */
	public abstract String getSysParam(String key);
	/**
	 * 新增系统参数
	 * @param key
	 * @param value
	 * @return
	 */
	public abstract String addSysParam(String key,String value);
	/**
	 * 更新系统参数
	 * @param key
	 * @param value
	 */
	public abstract void updateSysParam(String key, String value);
	
	/**
	 * 设置系统参数
	 * @param key 参数Key
	 * @param value 参数值
	 * @author 
	 */
	public abstract void setSysParam(String key, String value);
	
	
	////////////////////////控制参数////////////////////////
	
	/**
	 * 清除控制表数据
	 */
	public abstract void clearCtrlTableData();
	/**
	 * 判断表名是否在控制表中
	 * @param ctrlTableName
	 * @return
	 */
	public abstract boolean containsKeyInCtrlTableSet(String ctrlTableName);
	/**
	 * 判断控制表中是否包含控制表的数据
	 * @param ctrlTableName
	 * @return
	 */
	public abstract boolean containsKeyInCtrlTable(String ctrlTableName);
	
	public abstract void addCtrlTableSet(String tableAlias,String tableName);
	
	public abstract void addCtrlTable(String tableAlias,List tableList);
	
	public abstract String getCtrlTableSet(String tableAlias);
	
	public abstract List getCtrlTable(String tableAlias);
	
	public abstract void removeCtrlTable(String tableAlias);
	
}
